home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / TEMP / GNU / bison / StackOverf < prev    next >
Text File  |  1995-06-28  |  1KB  |  32 lines

  1. Stack Overflow
  2. Previous: <Mystery Conflicts=>MysteryCon> * Next: <Error Recovery=>ErrorRecov> * Up: <Algorithm=>Algorithm>
  3.  
  4. #Wrap on
  5. {fH3}Stack Overflow, and How to Avoid It{f}
  6.  
  7. The Bison parser stack can overflow if too many tokens are shifted and
  8. not reduced.  When this happens, the parser function {fCode}yyparse{f}
  9. returns a nonzero value, pausing only to call {fCode}yyerror{f} to report
  10. the overflow.
  11.  
  12. By defining the macro {fCode}YYMAXDEPTH{f}, you can control how deep the
  13. parser stack can become before a stack overflow occurs.  Define the
  14. macro with a value that is an integer.  This value is the maximum number
  15. of tokens that can be shifted (and not reduced) before overflow.
  16. It must be a constant expression whose value is known at compile time.
  17.  
  18. The stack space allowed is not necessarily allocated.  If you specify a
  19. large value for {fCode}YYMAXDEPTH{f}, the parser actually allocates a small
  20. stack at first, and then makes it bigger by stages as needed.  This
  21. increasing allocation happens automatically and silently.  Therefore,
  22. you do not need to make {fCode}YYMAXDEPTH{f} painfully small merely to save
  23. space for ordinary inputs that do not need much stack.
  24.  
  25. The default value of {fCode}YYMAXDEPTH{f}, if you do not define it, is
  26. 10000.
  27.  
  28. You can control how much stack is allocated initially by defining the
  29. macro {fCode}YYINITDEPTH{f}.  This value too must be a compile-time
  30. constant integer.  The default is 200.
  31.  
  32.